Embodiments of the invention relate to virtual machines, and in particular, to streaming virtual machine boot services over a network.
A virtual machine is a software abstraction of an underlying physical host machine. The software abstraction isolates the virtual machine from the host machine. Virtualized computing architecture allows multiple machines with heterogeneous operating systems to run in isolation, side-by-side, on the same physical hardware (e.g., server). Each virtual machine has its own set of virtual hardware allocated to it, including random access memory (RAM) and central processing unit (CPU) resources. Therefore, multiple virtual machines can operate concurrently, on the same host machine, without interfering with each other.
Virtualization decouples physical hardware of a host machine from the operating system of a virtual machine. Decoupling physical hardware for virtual machines provides resource utilization flexibility, protection, and isolation between a virtual environment and the underlying host machine. An operating system, known as a guest operating system, can run on a virtual machine and appear to an end user as if the operating system was running on a physical machine.
A virtual machine monitor, also known as a hypervisor, is a software layer that provides the abstraction of a virtual machine on a physical host machine. The software layer between guest machines' operating systems and a host machine's hardware creates virtual machines that emulate individual physical machines. Virtual machine monitors allow multiple operating systems to run concurrently on guest virtual machines on a single hardware platform.
A virtual machine is typically booted from a virtual machine image file. A virtual machine image file is an image of a virtual machine's operating system, software installation, and configuration. Virtual machines are self-contained in a virtual machine image file, which are typically stored in a virtual machine image repository that is accessible over a network. The virtual machine image file is typically copied to a host machine from an image repository over a network. In addition, a virtual machine image file can be used to boot multiple virtual machines having the same operating system, software, and configuration. However, virtual machine image files are very large, typically requiring gigabytes of storage. Accordingly, copying a virtual machine image requires a high bandwidth connection and can take a long time.